#ifndef IMAGE_H
#define IMAGE_H

// a simple example - you would need to add more funtions

class ImageType {
 public:
    ImageType();
    ImageType(int, int, int);
    ImageType(const ImageType &);
	~ImageType();
    void getImageInfo(int&, int&, int&);
    void setImageInfo(int, int, int);
    void setPixelVal(const int,const int, int);
    int getPixelVal(int, int) const;
    void Threshold (ImageType&);
    void getSubImage(int, int, int, int, ImageType &);
    void enlargeImage(int, ImageType &);
    void shrinkImage(int, ImageType &);
    int meanGray();
    void negateImage(ImageType &);
    void reflectImage(bool, ImageType &);
    void translateImage(int, ImageType &);
    void rotateImage(int, ImageType &);
    ImageType &operator = (const ImageType &);
    ImageType &operator + (ImageType &);
    ImageType &operator - (ImageType &);
 private:
    int N, M, Q;
    int **pixelValue;
};

    void readImageHeader(char[], int&, int&, int&, bool&);
    void readImage(char[], ImageType&);
    void writeImage(char[], ImageType&);
    void menu(ImageType &, ImageType &);
#endif
